home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagd_f.zip / FILES.SWG / 0063_Appending Data to EXE's.pas < prev    next >
Pascal/Delphi Source File  |  1995-03-03  |  1KB  |  47 lines

  1. {
  2. Altho it doesn't have the write & readthat yours has, I just found no need,
  3. esp. cuz I was using "COPY PROGRAM.EXE + DATA.FIL NEWPROG.EXE".
  4. }
  5. Unit ExeEnd;
  6.  
  7. Interface
  8.  
  9. Uses Dos;
  10.  
  11. Var EndOfExe, SizeOfData: LongInt;
  12.     Data: Boolean;
  13.  
  14.   Function GetExeInfo(Const Name: PathStr; var Data: Boolean; var EndOfExe,
  15.     SizeOfData: LongInt): Boolean;
  16.  
  17. Implementation
  18.  
  19. Function GetExeInfo(Const Name: PathStr; var Data: Boolean; var EndOfExe,
  20.   SizeOfData: LongInt): Boolean;
  21. Const CorrectExe=$5A4D; {'MZ'}
  22. Var Header: Array[1..3] of Word; {ID, ByteMod, Pages}
  23.     F: File;
  24.     ReadIn: Word;
  25. Begin
  26.   Data:=False;
  27.   EndOfExe:=0;
  28.   SizeOfData:=0;
  29.   If Name='.' then Exit;
  30.   Assign(F, Name);
  31.   {$I-} Reset(F, 1); {$I+}
  32.   If IOResult=0 then Begin
  33.     BlockRead(F, Header, SizeOf(Header), ReadIn);
  34.     If (ReadIn=SizeOf(Header)) and (Header[1]=CorrectExe) then
  35.       EndOfExe:=LongInt(Header[3]-1)*512+Header[2];
  36.     SizeOfData:=FileSize(F)-EndOfExe;
  37.     Close(F);
  38.     Data:=SizeOfData>0;
  39.     GetExeInfo:=True;
  40.   End Else GetExeInfo:=False;
  41. End;
  42.  
  43. Begin
  44.   If Lo(DosVersion)>=3 then GetExeInfo(ParamStr(0), Data, EndOfExe,
  45.     SizeOfData) Else GetExeInfo('.', Data, EndOfExe, SizeOfData);
  46. End.
  47.